package com.gengzp.permission.constants;

/**
 * @ClassName PermissionCacheConstants
 * @Description 权限认证框架缓存相关常量池
 * @Author gengzp
 * @Date 2025/8/14 0:37
 */
public interface PermissionCacheConstants {

    /**
     * 统一权限缓存key前缀, 所有的权限缓存key都以该前缀开头
     * <p> 键格式: permission: </p>
     */
    String PERMISSION_CACHE_KEY_UNIFIED_PREFIX = "permission:";

    /**
     * 用户信息缓存key前缀
     * <p> 键格式: permission:user_principal:[用户token] </p>
     * <p> 值格式: UserPrincipalModel的json字符串 </p>
     * {@link com.gengzp.permission.model.UserPrincipalModel}
     */
    String USER_PRINCIPAL_KEY_PREFIX = PERMISSION_CACHE_KEY_UNIFIED_PREFIX + "user_principal:";

    /**
     * 用户token缓存key前缀
     * <p> 键格式: permission:user_token:[用户id] </p>
     * <p> 值格式: UserTokenModel的Set集合的json字符串 </p>
     * {@link com.gengzp.permission.model.UserTokenModel}
     */
    String USER_TOKEN_KEY_PREFIX = PERMISSION_CACHE_KEY_UNIFIED_PREFIX + "user_token:";

    /**
     * 角色id缓存key前缀
     * <p> 键格式: permission:role_id </p>
     * <P> 值格式: 用英文逗号 "," 连接的角色id字符串 </P>
     */
    String ROLE_ID_KEY_PREFIX = PERMISSION_CACHE_KEY_UNIFIED_PREFIX + "role_id";

    /**
     * 角色权限信息缓存key前缀
     * <p> 键格式: permission:role_permission:[角色id] </p>
     * <p> 值格式: 用英文逗号 "," 连接的权限编码字符串 </p>
     */
    String ROLE_PERMISSION_KEY_PREFIX = PERMISSION_CACHE_KEY_UNIFIED_PREFIX + "role_permission:";

}
